home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / relnotes / compiler_eoe / ch1.z / ch1
Encoding:
Text File  |  2002-10-08  |  45.6 KB  |  1,254 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     7.3.1.3m for IRIX 6.5.18 Base Compiler Execution Environment Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     1.  _B_a_s_e__C_o_m_p_i_l_e_r__E_x_e_c_u_t_i_o_n__E_n_v_i_r_o_n_m_e_n_t
  73.  
  74.                     These release notes describe the MIPspro 7.3
  75.                     release and its maintenance update 7.3.1.3m for
  76.                     IRIX 6.5.18 of Silicon Graphics(TM) IRIX(TM)
  77.                     compiler execution environment (EOE)
  78.                     (compiler_eoe).  The IRIX compiler EOE contains
  79.                     compiler execution utilites such as rld and base
  80.                     compiler run-time libraries supplied as DSOs
  81.                     (dynamic shared objects).  DSOs are discussed in
  82.                     the dso(5) man page.  The IRIX compiler EOE
  83.                     supports MIPSpro compilers in either 64-bit,
  84.                     32-bit, or high performance 32-bit (n32)
  85.                     compilation modes.  For more information about
  86.                     64-bit and high performance 32-bit interfaces,
  87.                     see the _M_I_P_S_p_r_o _6_4-_b_i_t _P_o_r_t_i_n_g _a_n_d _T_r_a_n_s_i_t_i_o_n
  88.                     _G_u_i_d_e and the _M_I_P_S_p_r_o _N_3_2 _A_B_I _H_a_n_d_b_o_o_k.
  89.  
  90.                     If you plan to run any IRIX applications, it is
  91.                     important to note that you must install the IRIX
  92.                     compiler EOE.
  93.  
  94.                     Packaged with this software is a separate
  95.                     Software License Agreement.  This software is
  96.                     provided to you solely under the terms and
  97.                     conditions of the Software License Agreement.
  98.                     Please take a few moments to review this
  99.                     agreement.
  100.  
  101.  
  102.  
  103.                     1.1  _R_e_l_e_a_s_e__I_d_e_n_t_i_f_i_c_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
  104.  
  105.                     Following is the release identification
  106.                     information for the IRIX compiler EOE
  107.                     (compiler_eoe):
  108.  
  109.                     Software product              IRIX compiler EOE
  110.  
  111.                     Release                       7.3.1.3m for IRIX
  112.                                                   6.5.18
  113.  
  114.                     Product code                  IDEVFNT-1.2
  115.  
  116.                     System software requirements  IRIX 6.5.18
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                     1.2  _O_n_l_i_n_e__R_e_l_e_a_s_e__N_o_t_e_s
  139.  
  140.                     After you install the online documentation for a
  141.                     product (the relnotes subsystem), you can view
  142.                     the release notes on your screen.
  143.  
  144.                     If you have a graphics system, select Release
  145.                     Notes from the Help submenu of the Toolchest.
  146.                     This displays the grelnotes(1) graphical browser
  147.                     for the online release notes.  For information
  148.                     on options to this command, refer to the
  149.                     grelnotes(1) man page.
  150.  
  151.                     If you do not have a graphics system, you can
  152.                     use the relnotes command.  For information on
  153.                     accessing the online release notes using this
  154.                     command, refer to the relnotes(1) man page.
  155.  
  156.  
  157.                     1.3  _P_r_o_d_u_c_t__S_u_p_p_o_r_t
  158.  
  159.                     Silicon Graphics provides a comprehensive
  160.                     product support maintenance program for its
  161.                     products.
  162.  
  163.                     If you are in the United States or Canada and
  164.                     would like support for your Silicon Graphics
  165.                     supported products, contact the Customer Support
  166.                     Center at 1-800-800-4SGI.
  167.  
  168.                     If you are outside the United States or Canada,
  169.                     contact the Silicon Graphics subsidiary or
  170.                     authorized distributor in your country.
  171.  
  172.  
  173.  
  174.                     1.4  _I_n_s_t_a_l_l_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
  175.  
  176.                     If you are installing this option for the first
  177.                     time, to install the subsystems marked default,
  178.                     use the go menu item.  To install a different
  179.                     set of subsystems, use the following commands in
  180.                     inst to customize the list of subsystems to be
  181.                     installed:
  182.  
  183.                        +o install
  184.  
  185.                        +o remove
  186.  
  187.                        +o keep
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                - 4 -
  201.  
  202.  
  203.  
  204.                        +o step
  205.  
  206.                     Then select the go menu item.
  207.  
  208.  
  209.                     1.5  _S_u_b_s_y_s_t_e_m_s
  210.  
  211.                     The IRIX compiler EOE software (compiler_eoe)
  212.                     for MIPSpro 7.3 includes the following
  213.                     subsystems:
  214.  
  215.                     compiler_eoe.man.relnotes  IRIX compiler
  216.                                                execution environment
  217.                                                release notes
  218.                                                (default)
  219.  
  220.                     compiler_eoe.man.dso       IRIX DSO man page
  221.                                                (default)
  222.  
  223.                     compiler_eoe.man.unix      IRIX standard man
  224.                                                pages (default)
  225.  
  226.                     compiler_eoe.sw.cpp        Source code
  227.                                                preprocessor
  228.                                                (default)
  229.  
  230.                     compiler_eoe.sw.lboot      Kernel lboot software
  231.                                                (default)
  232.  
  233.                     compiler_eoe.sw.lib        Base compilers
  234.                                                execution libraries
  235.                                                (default)
  236.  
  237.                     compiler_eoe.sw.unix       IRIX execution
  238.                                                environment
  239.                                                (compiler) (default)
  240.  
  241.                     compiler_eoe.sw64.lib      Base compilers
  242.                                                execution libraries
  243.                                                (64-bit) (default on
  244.                                                R8000(TM) and
  245.                                                R10000(TM) systems
  246.                                                only)
  247.  
  248.                     compiler_eoe.sw64.unix     IRIX execution
  249.                                                environment ( 64-bit
  250.                                                compiler) (default on
  251.                                                R8000 and R10000
  252.                                                systems only)
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                - 5 -
  267.  
  268.  
  269.  
  270.                     1.6  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._3_m__f_o_r__I_R_I_X__6_._5_._1_8_
  271.  
  272.                     846339   Pthread C++ code with exception
  273.                              handling hang
  274.  
  275.                     858299   Rqs fails with new libc allocation on
  276.                              unix98
  277.  
  278.  
  279.                     1.7  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._3_m_
  280.  
  281.                     770106   The file
  282.                              /usr/relnotes/compiler_eoe/chA.z has
  283.                              size 0. This has been fixed.
  284.  
  285.                     777196   Gaussian problem with policy module
  286.                              table.
  287.  
  288.                              A customer running Gaussian98 on IRIX
  289.                              6.5.x reports a problem with MLD
  290.                              creation. The error returned is:
  291.  
  292.                                Could not create MLD: Not enough space
  293.  
  294.                              This has been fixed.
  295.  
  296.                     804796   libmp coredumps with OMP_NUM_THREADS ==
  297.                              256.  This has been fixed.
  298.  
  299.  
  300.                     822823   F90: acos returns NaN.
  301.  
  302.                              The program below prints NaN instead of
  303.                              pi for the variable z. This was first
  304.                              observed with the Fortan 90 MIPSpro
  305.                              7.3.1.2 compiler.  This occured when
  306.                              the program was compiled -n32 and -64.
  307.                              If variables a and b are declared
  308.                              real*16, then variable z is correct.
  309.  
  310.                                program test
  311.                                      real*8 a,b
  312.                                      real*16 x,y,z
  313.                                      a = 4.
  314.                                      b = 1.
  315.                                      x = a * atan(b)
  316.                                      y = cos(x)
  317.                                      z = acos(y)
  318.                                      print *, x, y, z
  319.                                end program test
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                - 6 -
  333.  
  334.  
  335.  
  336.                              This has been fixed.
  337.  
  338.                     821769   Significant performance loss running
  339.                              ADA apps in 6.5.10.  This has been
  340.                              fixed.
  341.  
  342.  
  343.                     834590   The .dynamic section of the a.out now
  344.                              has entries for the timestamp and
  345.                              checksum. This allows downstream tools
  346.                              such as SpeedShop to determine if data
  347.                              files match the executable or not. This
  348.                              information has always been in dsos.
  349.  
  350.                              Warning: a recompiled a.out will now
  351.                              always have different bits.
  352.  
  353.  
  354.                     819091   The linker generates some text on it's
  355.                              own such as the init and fini function
  356.                              driver. Up to now the linker neglected
  357.                              to generate debugging information along
  358.                              with this text making unwinding in the
  359.                              debugger and exception handling
  360.                              routines problematic. This has been
  361.                              fixed.
  362.  
  363.                              There are still problems with unwinding
  364.                              through linker generated code that has
  365.                              been instrumented for performance
  366.                              evaluation. This will be addressed
  367.                              later.
  368.  
  369.  
  370.  
  371.                     1.8  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._2_m
  372.  
  373.                     778798   rld was broken for purify on pthread
  374.                              applications, and the purified
  375.                              pthreaded app could coredump.
  376.  
  377.                     783179   rqs/rqs32/rqs64 did not process the
  378.                              multigot dynamic section extensions of
  379.                              multigot executables or DSOs correctly
  380.                              (see man ld, man dso).  The error was
  381.                              harmless but could be distressing on a
  382.                              multigot executable (rqs could coredump
  383.                              processing netscape 4.72, for example,
  384.                              but the coredump would NOT harm
  385.                              netscape).  If rqs did not core dump on
  386.                              a  multigot shared library (DSO) it
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                - 7 -
  399.  
  400.  
  401.  
  402.                              processed, rqs could corrupt the  DSO
  403.                              (if and only if rqs was attempting to
  404.                              'move' the DSO to a new address and
  405.                              terminated normally:  if rqs coredumped
  406.                              then the DSO it was processing is
  407.                              safe).  There are very few multigot
  408.                              DSOs: /usr/lib64/libInventor.so.3 is
  409.                              one such.  Once damaged, a DSO is not
  410.                              repairable, but must be reinstalled.
  411.                              [If "elfdump -L myfile | grep AUX_DYN"
  412.                              shows a line or more of output then
  413.                              <myfile> is multigot.]
  414.  
  415.                     770775   n32, 64 libexc.so The
  416.                              trace_back_stack()  and/or exc_unwind()
  417.                              functions could get mixed up and not
  418.                              trace back successfully in programs
  419.                              using pthreads.  Now fixed.
  420.  
  421.                     770782   n32, 64 libexc.so The  exc_unwind()
  422.                              function was not setting sigcontext pc
  423.                              to 0 always.  A prudent application
  424.                              will also check for  a sigcontext pc <
  425.                              4 and stop, though the library bug is
  426.                              fixed.
  427.  
  428.                     770785   n32, 64 libexc.so The  exc_unwind()
  429.                              function was not unwinding past
  430.                              sigtramp(). Fixed.
  431.  
  432.                     761433   n32, 64 libexc.so If dbx or WorkShop
  433.                              had set a frame_exit_trap in a routine
  434.                              on the stack, functions such as
  435.                              trace_back_stack() did not work
  436.                              correctly because of the details of the
  437.                              implementation of dbx/WorkShop frame
  438.                              exit traps.  Fixed libexc.so to deal
  439.                              with this situation so the traceback
  440.                              works.
  441.  
  442.                     792734   o32 libexc.so The floating point
  443.                              registers were being picked up
  444.                              incorrectly from memory when libexc
  445.                              unwound the stack.  libexc was not
  446.                              reflecting the o32 ABI register save
  447.                              rules during the restoration.  Now this
  448.                              works correctly.
  449.  
  450.                     673119   rld -ignore_version did not work when
  451.                              -delay_load was used in earlier 7.3
  452.                              releases.  Fixed.
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                - 8 -
  465.  
  466.  
  467.  
  468.                     678896   _RLDN32_LIST processing could be wrong
  469.                              if  "" was used as the environment
  470.                              variable value to turn off _RLDN32_LIST
  471.                              when _RLD_LIST was set for o32.  Fixed.
  472.  
  473.                     780001   32-bit Log function returns incorrect
  474.                              results. This has been fixed.
  475.  
  476.                     801546   Mips4 version of libfastm gives
  477.                              incorrect results on R5000.
  478.  
  479.  
  480.  
  481.  
  482.                     1.9  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._1_m__(_a_n_d__7_._3_._1_m_)
  483.  
  484.  
  485.                     The MIPSpro 7.3 Compiler Execution Environment
  486.                     for IRIX 6.5.x consisted of runtime libraries
  487.                     that contained daddiu instructions that could
  488.                     encounter an arithmetic overflow under certain
  489.                     circumstances.  An errata in revision 4 or
  490.                     earlier of MIPS R4000 and R4400 would cause
  491.                     incorrect answers to be produced when
  492.                     encountering arithmetic overflows in executing
  493.                     the daddiu instruction.
  494.  
  495.  
  496.                     To see what processors are on your system,
  497.                     use the hinv command:
  498.  
  499.                     Example:
  500.  
  501.                     % hinv
  502.                     Processor 12: 100 MHZ IP19
  503.                     CPU: MIPS R4400 Processor Chip Revision: 4.0
  504.                     FPU: MIPS R4000 Floating Point Coprocessor Revision: 0.0
  505.  
  506.                     In the example, the Revision 4.0 processor does have the
  507.                     daddiu instruction errata.
  508.  
  509.  
  510.                     Although no demonstrable bugs have been found in
  511.                     the base compiler runtime libraries, they also
  512.                     have been recompiled, so as not to use the
  513.                     daddiu instruction in cases where arithmetic
  514.                     overflow can happen.
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                - 9 -
  531.  
  532.  
  533.  
  534.                     1.10  _B_u_g_f_i_x_e_s__i_n__7_._3
  535.  
  536.                     The following sections describe bugs that have
  537.                     been fixed since the MIPSpro 7.2.1 release.
  538.  
  539.  
  540.                     1.10.1  _B_u_g_s__F_i_x_e_d__i_n__l_i_b_m
  541.  
  542.                     The following libm bugfixes have been applied
  543.                     from patchSG0003131 into compiler_eoe 7.2.1.1m
  544.                     for IRIX 6.5.1m:
  545.  
  546.                     591738, 594226, 595879     Under certain inputs,
  547.                                                sin() returns wrong
  548.                                                results on systems
  549.                                                running on the
  550.                                                R5000(TM) CPU.
  551.  
  552.  
  553.  
  554.                     1.10.2  _B_u_g_s__F_i_x_e_d__i_n__l_i_b_m_p
  555.  
  556.                     The following libmp bugfixes have been made in
  557.                     compiler_eoe 7.2.1.3m/f for IRIX 6.5.3m/f:
  558.  
  559.                     658799                     libmp.so is not cpr
  560.                                                compliant in IRIX
  561.                                                versions 6.5.[2,3].
  562.  
  563.                     638713                     Various routines
  564.                                                invoke mp_numthreads,
  565.                                                disabling dynamic
  566.                                                threads in IRIX 6.5.
  567.  
  568.                     657207                     Cannot change number
  569.                                                of threads between
  570.                                                parallel regions with
  571.                                                version 7.3
  572.                                                compilers.
  573.  
  574.                     The following libmp bugfixes have been made in
  575.                     compiler_eoe 7.2.1.2m/f for IRIX 6.5.2m/f:
  576.  
  577.                     554156                     Use of the
  578.                                                environment variable
  579.                                                MP_SLAVE_STACKSIZE
  580.                                                leads to
  581.                                                unpredictable
  582.                                                results.
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                - 10 -
  597.  
  598.  
  599.  
  600.                     560707                     Fortran MP programs
  601.                                                (sproc) with
  602.                                                unlimited stack sizes
  603.                                                fail.
  604.  
  605.                     587240                     A performance
  606.                                                degradation occurs
  607.                                                when OMP_DYNAMIC is
  608.                                                set and the program
  609.                                                is run under Miser.
  610.  
  611.                     599609                     libmp MLD information
  612.                                                is incorrect on 128
  613.                                                CPUs.
  614.  
  615.                     610654                     In OpenMP, a barrier
  616.                                                within the dynamic
  617.                                                extent of a parallel
  618.                                                do receives a
  619.                                                misleading error
  620.                                                message at run time.
  621.                                                In particular, a
  622.                                                barrier is a
  623.                                                synchronization
  624.                                                construct, not a
  625.                                                worksharing
  626.                                                construct.
  627.  
  628.                     587240                     When using the
  629.                                                _DSM_MUSTRUN flag and
  630.                                                a node has only one
  631.                                                CPU and a process
  632.                                                gets scheduled to run
  633.                                                on that node, libmp
  634.                                                attempts to place a
  635.                                                process on a non-
  636.                                                existent processor.
  637.  
  638.                     The following libmp bugfixes have been applied
  639.                     from patchSG0003139 into compiler_eoe 7.2.1.1m
  640.                     for IRIX 6.5.1m:
  641.  
  642.                     581775                     The OpenMP directive,
  643.                                                schedule(static,ichunk),
  644.                                                ignores ichunk.
  645.  
  646.                     581835                     The OpenMP directive,
  647.                                                ORDERED
  648.                                                schedule(dynamic,ichunk),
  649.                                                deadlocks if ichunk
  650.                                                is not equal to
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                                                - 11 -
  663.  
  664.  
  665.  
  666.                                                n/nprocs.
  667.  
  668.                     590252                     Program with the
  669.                                                OpenMP ORDERED
  670.                                                directive deadlocks
  671.                                                under some
  672.                                                conditions.
  673.  
  674.  
  675.                     1.10.3  _B_u_g_s__F_i_x_e_d__f_o_r__r_l_d__a_n_d__r_q_s  The
  676.                     following rld and rqs bugs have been fixed since
  677.                     the 7.2.1.2m release of compiler_eoe for IRIX
  678.                     6.5.2m:
  679.  
  680.                     608296, 641687, 641192     Various performance
  681.                                                improvements have
  682.                                                reduced CPU time
  683.                                                spent in rld (in
  684.                                                small ways).
  685.  
  686.                     426852                     By default, rld no
  687.                                                longer reevaluates
  688.                                                name bindings on
  689.                                                dlclose().  (The
  690.                                                _RLD_ARGS -f argument
  691.                                                also uses this new
  692.                                                default behavior).
  693.                                                This fix makes
  694.                                                dlclose() fast and
  695.                                                eliminates many
  696.                                                lazy-text-resolves.
  697.                                                It also affects the
  698.                                                operation of programs
  699.                                                that rely on names
  700.                                                being rebound to a
  701.                                                different
  702.                                                function/data item
  703.                                                after a dlclose().
  704.                                                Such programs are
  705.                                                erroneous.  If the -s
  706.                                                option is present
  707.                                                with _RLD_ARGS, the
  708.                                                old slow method of
  709.                                                dlclose is used (this
  710.                                                is provided for
  711.                                                erroneous programs
  712.                                                that depend on the
  713.                                                old method).  Details
  714.                                                are as follows:
  715.  
  716.                                                Each name SHOULD be
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                                                - 12 -
  729.  
  730.  
  731.  
  732.                                                bound only once by
  733.                                                rld, but in
  734.                                                complicated
  735.                                                circumstances, names
  736.                                                can be rebound.  If
  737.                                                the result of
  738.                                                application actions
  739.                                                (like dlclose()) is
  740.                                                that the rebinding
  741.                                                finds a different
  742.                                                external definition,
  743.                                                the result can be
  744.                                                application problems
  745.                                                or an application
  746.                                                crash (rld does not
  747.                                                realize this has
  748.                                                happened and will not
  749.                                                give a warning).  (In
  750.                                                addition, having a
  751.                                                weak name defined in
  752.                                                one DSO and a strong
  753.                                                version in a DSO
  754.                                                loaded later leads to
  755.                                                'undefined name
  756.                                                bindings' and
  757.                                                potentially
  758.                                                inconsistent
  759.                                                application behavior.
  760.                                                This has always been
  761.                                                true but not
  762.                                                mentioned earlier.
  763.  
  764.                     644389                     If an application did
  765.                                                an sgidladd() or
  766.                                                dlopen(...RTLD_GLOBAL),
  767.                                                followed by a
  768.                                                dlopen(...RTLD_LOCAL)
  769.                                                (and the call to
  770.                                                sgidladd/dlopen(...RTLD_GLOBAL)
  771.                                                was itself done from
  772.                                                a DSO that was opened
  773.                                                or added by a dlopen
  774.                                                or dladd command),
  775.                                                name lookups by rld
  776.                                                might not find names
  777.                                                made global by the
  778.                                                sgidladd() or
  779.                                                dlopen(...RTLD_GLOBAL).
  780.                                                This was a bug
  781.                                                introduced in patch
  782.                                                3378.
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.                                                - 13 -
  795.  
  796.  
  797.  
  798.                     638915                     If a DSO or
  799.                                                executable file had
  800.                                                more than 4096
  801.                                                conflict symbols, rqs
  802.                                                could core dump.  Now
  803.                                                the hash table
  804.                                                definition allows up
  805.                                                to 262,000+ conflict
  806.                                                symbols. Although
  807.                                                this is the maximum
  808.                                                size allowed, if a
  809.                                                smaller number will
  810.                                                work, a smaller
  811.                                                number is used.
  812.  
  813.                     649041                     If a lazy-text-
  814.                                                resolution call
  815.                                                involved floating
  816.                                                point argument
  817.                                                registers and if a
  818.                                                call in the -init
  819.                                                code in the DSO
  820.                                                loaded involved
  821.                                                floating point
  822.                                                registers, the lazy-
  823.                                                text call fp argument
  824.                                                registers would be
  825.                                                destroyed by the
  826.                                                -init arguments.  Due
  827.                                                to details of
  828.                                                argument register
  829.                                                passing, this bug is
  830.                                                seen most readily
  831.                                                with the n32/64 ABIs,
  832.                                                though it can be
  833.                                                reproduced in any of
  834.                                                the ABIs.
  835.  
  836.                     651001                     On delay-loads of
  837.                                                DSOs, versions have
  838.                                                been ignored for
  839.                                                almost all earlier
  840.                                                releases of rld.  Now
  841.                                                rld checks the
  842.                                                version number on
  843.                                                delay-loads too.  The
  844.                                                new _RLD_ARGS option
  845.                                                -idv turns off DSO
  846.                                                version checking for
  847.                                                delay-loads in rld
  848.                                                and rld.debug,
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.                                                - 14 -
  861.  
  862.  
  863.  
  864.                                                restoring the old,
  865.                                                broken behavior.
  866.  
  867.                     630359                     Debugger stack traces
  868.                                                through rld sometimes
  869.                                                stops in rld due to
  870.                                                mistakes in some
  871.                                                hand-written assembly
  872.                                                code in rld.  Now the
  873.                                                stack traces show the
  874.                                                callers back to
  875.                                                main(), as
  876.                                                appropriate.
  877.  
  878.                     629117                     rld now obeys the
  879.                                                general rule that
  880.                                                processing is
  881.                                                breadth-first
  882.                                                (loading of DSOs from
  883.                                                liblists and dlsym()
  884.                                                name resolution are
  885.                                                examples).  Details
  886.                                                are as follows:
  887.  
  888.                                                In the past, it did
  889.                                                almost-breadth-first
  890.                                                ordering.  Because
  891.                                                seeing an error in
  892.                                                ordering required
  893.                                                having duplicate
  894.                                                symbol definitions at
  895.                                                least 4 levels deep
  896.                                                in DSO nested
  897.                                                liblists, it is
  898.                                                unlikely this bug
  899.                                                affected any
  900.                                                application.  But the
  901.                                                ABIs have always been
  902.                                                clear and now rld
  903.                                                obeys the ABIs.
  904.  
  905.                     629128                     In the case of a
  906.                                                dlclose(), all -fini
  907.                                                execution is done for
  908.                                                a set of DSOs (where
  909.                                                this is the dlclose
  910.                                                of the last
  911.                                                reference) before any
  912.                                                are unmapped.
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.                                                - 15 -
  927.  
  928.  
  929.  
  930.                     629707                     Nested
  931.                                                dlopen/sgidladd/delay-
  932.                                                load (that is,
  933.                                                invoking
  934.                                                dlopen/sgidladd/delay-
  935.                                                load from within the
  936.                                                -init or -fini code
  937.                                                of a
  938.                                                dlopen/sgidladd/delay-
  939.                                                load) now works even
  940.                                                in the pthreads and
  941.                                                sproc threads cases.
  942.                                                Nested
  943.                                                dlopen/sgidladd/delay-
  944.                                                load was always
  945.                                                problematic (though
  946.                                                if no pthreads or
  947.                                                sproc threads were in
  948.                                                use, it might have
  949.                                                appeared to work, as
  950.                                                long as none of the
  951.                                                nested
  952.                                                dlopen/sgidladd/delay-
  953.                                                load failed).
  954.  
  955.                                                Use nested
  956.                                                dlopen/sgidladd only
  957.                                                when absolutely
  958.                                                required.  Use -init
  959.                                                only when absolutely
  960.                                                required, as the
  961.                                                nested dependencies
  962.                                                make static
  963.                                                prediction of the
  964.                                                ordering in which the
  965.                                                -init code is to be
  966.                                                run difficult.
  967.  
  968.                                                C++ global
  969.                                                constructors ordering
  970.                                                across compiliation
  971.                                                units has always been
  972.                                                unspecified by the
  973.                                                C++ definition.
  974.                                                Adding delay-load to
  975.                                                the set of DSOs with
  976.                                                mutual constructor
  977.                                                calls makes the
  978.                                                ordering even less
  979.                                                predictable.  Using
  980.                                                or setting
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                                                - 16 -
  993.  
  994.  
  995.  
  996.                                                sigprocmask(2) in
  997.                                                -init or -fini code
  998.                                                is not a good idea
  999.                                                because the set of
  1000.                                                masks seen as ON is
  1001.                                                affected by rld.  The
  1002.                                                precise behavior of
  1003.                                                sigprocmask(2) in
  1004.                                                -init or -fini code
  1005.                                                depends on which of
  1006.                                                1) pthreads, 2) sproc
  1007.                                                threads, or 3)
  1008.                                                neither is in use.
  1009.                                                The details are not
  1010.                                                specified in these
  1011.                                                release notes; it is
  1012.                                                best to avoid setting
  1013.                                                or resetting the
  1014.                                                sigprocmask() in
  1015.                                                -init or -fini code.
  1016.                                                In addition, it is
  1017.                                                still difficult to
  1018.                                                debug -init code in
  1019.                                                the application
  1020.                                                startup.
  1021.  
  1022.                     634151                     If the filesystem of
  1023.                                                a DSO had no XFS
  1024.                                                attributes, rqs could
  1025.                                                fail (refuse to
  1026.                                                update a DSO to allow
  1027.                                                quickstart) and fail
  1028.                                                to print the proper
  1029.                                                reason message.  (The
  1030.                                                system would operate
  1031.                                                properly in spite of
  1032.                                                this rqs error.)  Now
  1033.                                                rqs understands that
  1034.                                                ENOATTR is not really
  1035.                                                a failure, allowing
  1036.                                                the DSO to be
  1037.                                                quickstarted again,
  1038.                                                and uses strerror()
  1039.                                                to properly print all
  1040.                                                errno values when
  1041.                                                there is an error.
  1042.  
  1043.                     547873                     rld got delay load
  1044.                                                DSO visibility
  1045.                                                slightly wrong in
  1046.                                                MIPSpro 7.2.1.  Too
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.                                                - 17 -
  1059.  
  1060.  
  1061.  
  1062.                                                restrictive in symbol
  1063.                                                visibility.
  1064.  
  1065.                     648641                     ssrun(1) could
  1066.                                                interact with rld,
  1067.                                                causing some -init
  1068.                                                functions to not run
  1069.                                                correctly. This fix
  1070.                                                corrects the rld
  1071.                                                part.
  1072.  
  1073.                                                Note: it is erroneous
  1074.                                                for a signal handler
  1075.                                                to call dlopen(),
  1076.                                                dlclose(),
  1077.                                                sgidladd(),
  1078.                                                sgidlopen_version(),
  1079.                                                dlsym(), or
  1080.                                                dlerror().
  1081.                                                Similarly, no
  1082.                                                function call in a
  1083.                                                signal handler is
  1084.                                                allowed to cause a
  1085.                                                delay-load of a DSO
  1086.                                                (this is an implicit
  1087.                                                dlopen and it is not
  1088.                                                correct).  In fact,
  1089.                                                very few functions
  1090.                                                are legally callable
  1091.                                                from a signal
  1092.                                                handler. the dl*
  1093.                                                functions are not so
  1094.                                                callable.  It is up
  1095.                                                to  applications to
  1096.                                                ensure that such does
  1097.                                                not happen.
  1098.  
  1099.                     The following bugs have been fixed since the
  1100.                     7.2.1.1m release of compiler_eoe for IRIX
  1101.                     6.5.1m:
  1102.  
  1103.                     549912                     In rld there were
  1104.                                                potential deadlock
  1105.                                                and signal-mask
  1106.                                                handling problems.
  1107.  
  1108.  
  1109.                     554703                     rld needs to emit a
  1110.                                                better message in
  1111.                                                case of bad
  1112.                                                DSO/executable file.
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.                                                - 18 -
  1125.  
  1126.  
  1127.  
  1128.                     558948                     In rld, there was an
  1129.                                                incorrrect
  1130.                                                implementation of
  1131.                                                add_version_to_name().
  1132.  
  1133.  
  1134.                     568510                     rqsall, under certain
  1135.                                                circumstances, falls
  1136.                                                into an infinite
  1137.                                                loop.
  1138.  
  1139.  
  1140.                     586353                     A call occurs to a
  1141.                                                function defined by
  1142.                                                rld at 0xffffffff.
  1143.  
  1144.  
  1145.                     589044                     An rld warning does
  1146.                                                not give the object
  1147.                                                name.
  1148.  
  1149.  
  1150.                     600777                     rld incorrectly
  1151.                                                performs an alloca()
  1152.                                                in a loop.
  1153.  
  1154.  
  1155.                     604402                     An rqsall manpage
  1156.                                                example does not
  1157.                                                work.
  1158.  
  1159.  
  1160.                     608753                     The rld
  1161.                                                RHF_NO_LIBRARY_REPLACEMENT
  1162.                                                argument is not
  1163.                                                honored.
  1164.  
  1165.  
  1166.                     614133, 615089             rld is too large and
  1167.                                                could be smaller with
  1168.                                                its own vsnprintf.
  1169.  
  1170.  
  1171.                     615441                     rld does extra
  1172.                                                useless lookups,
  1173.                                                degrading
  1174.                                                performance.
  1175.  
  1176.  
  1177.                     620471                     An application that
  1178.                                                performs a dlopen
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.                                                - 19 -
  1191.  
  1192.  
  1193.  
  1194.                                                experiences slow
  1195.                                                performance due to
  1196.                                                poor string compare
  1197.                                                code.
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.